//package org.example.models;
//
//import com.fasterxml.jackson.annotation.JsonIgnore;
//import org.example.entity.Permissions;
//import org.example.entity.User;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.userdetails.UserDetails;
//
//import java.util.Collection;
//import java.util.List;
//import java.util.stream.Collectors;
//
//public class LoginUser implements UserDetails {
//    private User user;
//    private List<Permissions> permissions;
//
//    public LoginUser(){}
//
//    public void setUser(User user) {
//        this.user = user;
//    }
//
//    public void setPermissions(List<Permissions> permissions) {
//        this.permissions = permissions;
//    }
//
//    public LoginUser(User user, List<Permissions> permissions) {
//        this.user = user;
//        this.permissions = permissions;
//    }
//
//    public User getUser() {
//        return user;
//    }
//
//    public List<Permissions> getPermissions() {
//        return permissions;
//    }
//
//    @Override
//    @JsonIgnore
//    public Collection<? extends GrantedAuthority> getAuthorities() {
//        return permissions.stream().map(
//                item -> new SimpleGrantedAuthority(item.getMenuCode()))
//                .collect(Collectors.toList());
//    }
//
//    @Override
//    @JsonIgnore
//    public String getPassword() {
//        return user.getPassword();
//    }
//
//    @Override
//    @JsonIgnore
//    public String getUsername() {
//        return user.getUsername();
//    }
//
//    @Override
//    @JsonIgnore
//    public boolean isAccountNonExpired() {
//        return true;
//    }
//
//    @Override
//    @JsonIgnore
//    public boolean isAccountNonLocked() {
//        return true;
//    }
//
//    @Override
//    @JsonIgnore
//    public boolean isCredentialsNonExpired() {
//        return true;
//    }
//
//    @Override
//    @JsonIgnore
//    public boolean isEnabled() {
//        return true;
//    }
//}
